home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / apps / astronmy / strchart.arc / patch.arc / staranim.c < prev    next >
C/C++ Source or Header  |  1989-03-23  |  4KB  |  105 lines

  1. #include <stdio.h>
  2. #include <osbind.h> /* Needed for Cconws() and Crawcin() */
  3.  
  4. extern char *getenv();
  5.  
  6. int daysinmonth[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
  7.  
  8. main(argc, argv)
  9. int argc;
  10. char *argv[];
  11. {
  12.      int debug = 0, i, j, month;
  13.      char *eargv[20], *eenv[2], label[10], picture[14], sday[2], smonth[3];
  14.  
  15.      if (argc < 4) {
  16.           Cconws("Usage: ");
  17.           Cconws(argv[0]);
  18.           Cconws(" <month> <year> <arguments ... >\r\n");
  19.           Cconws("       <month> is an integer from 1 to 12.\r\n");
  20.           Cconws("       <year> is a four-digit integer.\r\n");
  21.           Cconws("       <arguments> are passed to starst.\r\n");
  22.           Cconws("Portions of this program, copyright 1984, ");
  23.           Cconws("Mark Williams Company.\r\n");
  24.           /* We want to hold the screen if invoked from the GEM desktop;
  25.              the desktop doesn't usually set any environment variables,
  26.              and if getenv() does find anything, it's probably a NULL string. */
  27.           if (((getenv("PATH")) == 0) || (strlen(getenv("PATH")) == 0)) {
  28.                Cconws("press any key to continue:  ");
  29.                i = Crawcin(); /* Read raw character input */
  30.           }
  31.           exit(1);
  32.      }
  33.      if (strlen(argv[2]) != 4) {
  34.           Cconws("Year must be in 4-digit form (e.g. 1988).\r\n");
  35.           if (((getenv("PATH")) == 0) || (strlen(getenv("PATH")) == 0)) {
  36.                Cconws("press any key to continue:  ");
  37.                i = Crawcin(); /* Read raw character input */
  38.           }
  39.           exit(1);
  40.      }
  41.      if ((month = atoi(argv[1])) > 100) {
  42.           month -= 100;
  43.           ++debug;
  44.      }
  45.      if ((month < 1) || (month > 12)) {
  46.           Cconws("Month must be an integer from 1 to 12.\r\n");
  47.           if (((getenv("PATH")) == 0) || (strlen(getenv("PATH")) == 0)) {
  48.                Cconws("press any key to continue:  ");
  49.                i = Crawcin(); /* Read raw character input */
  50.           }
  51.           exit(1);
  52.      }
  53.      for (i = 1; i <= daysinmonth[month - 1]; i++) {
  54.           sprintf(smonth, "%d", month);
  55.           sprintf(sday, "%d", i);
  56.           eargv[0]  = "planet.ttp";
  57.           eargv[1]  = "-y";
  58.           eargv[2]  = argv[2];
  59.           eargv[3]  = "-m";
  60.           eargv[4]  = smonth;
  61.           eargv[5]  = "-d";
  62.           eargv[6]  = sday;
  63.           eargv[7]  = "-t";
  64.           eargv[8]  = "12";
  65.           eargv[9]  = "-z";
  66.           eargv[10] = "0";
  67.           eargv[11] = eenv[1] = 0;
  68.           eenv[0] = "PATH=."; /* Make programs think they came from shell */
  69.           if (debug) {
  70.                Cconws("\r\n");
  71.                for (j = 0; eargv[j] != '\0'; j++) {
  72.                     Cconws(eargv[j]);
  73.                     Cconws(" ");
  74.                }
  75.           } else {
  76.                execve(eargv[0], eargv, eenv);
  77.           }
  78.           sprintf(label, "%02d/%02d/%2s", month, i, argv[2] + 2);
  79.           sprintf(picture, "star%02d%02d.pi1", month, i);
  80.           eargv[0]  = "starst.ttp";
  81.           eargv[1]  = "-t";
  82.           eargv[2]  = label;
  83.           eargv[3]  = "-x";
  84.           eargv[4]  = picture;
  85.           for (j = 3; j < argc; j++) {
  86.                eargv[j + 2] = argv[j];
  87.           }
  88.           eargv[j + 2] = '\0';
  89.           if (debug) {
  90.                Cconws("\r\n");
  91.                for (j = 0; eargv[j] != '\0'; j++) {
  92.                     Cconws(eargv[j]);
  93.                     Cconws(" ");
  94.                }
  95.                Cconws("\r\n");
  96.           } else {
  97.                execve(eargv[0], eargv, eenv);
  98.           }
  99.      } /* End of "for" loop */
  100.      if (debug && ((getenv("PATH")) == 0) || (strlen(getenv("PATH")) == 0)) {
  101.           Cconws("press any key to continue:  ");
  102.           i = Crawcin(); /* Read raw character input */
  103.      }
  104. }
  105.